﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using WindowsFormProject.Depo.Tedarikciler;
using WindowsFormProject.Depo.Alislar;
//using WindowsFormProject.Depo.Business.Tedarikciler;

namespace WindowsFormProject.Depo
{
    public partial class FrmTedarikciler : Form
    {
        public FrmTedarikciler()
        {
            InitializeComponent();
        }
        Form VeriGonderilecekForm = null;
        public FrmTedarikciler(Form Form)
        {
            InitializeComponent();
             VeriGonderilecekForm=Form ;
        }
        
        public BindingSource MySource = new BindingSource();
        
        DataSet MyDataSet = new DataSet();
        private void FrmTedarikciler_Load(object sender, EventArgs e)
        {
            txtFirmaAra.Select();
            GenelIslemler.BackGrounWorkerCalistir(this.BGWTedarikciDoldur);
            foreach (Control control in groupBox1.Controls)
            {
                control.Validated += new EventHandler(control_Validated);

            }
        }

        void control_Validated(object sender, EventArgs e)
        {
            MySource.EndEdit();
        }

        private void BGWTedarikciDoldur_DoWork(object sender, DoWorkEventArgs e)
        {
            MyDataSet.Tables.Add(TedarikciProvider.FirmalarByDataTable());
        }

        private void BGWTedarikciDoldur_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            MySource.DataSource = MyDataSet;
            MySource.DataMember = MyDataSet.Tables["Tedarikciler"].TableName;
            DGWTedarikciler.DataSource = MySource;
            MySource.Position = MySource.Count;
            bindingNavigator1.BindingSource = MySource;
            GenelIslemler.TextboxBindingEt(MySource, this.groupBox1.Controls);

            //txtfirma_ara.Select();
        }

        private void txtFirmaAra_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Down)
            {
               DGWTedarikciler.Select();
                MySource.MoveFirst();
            }
        }

        private void txtFirmaAra_TextChanged(object sender, EventArgs e)
        {
            if (txtFirmaAra.Text != string.Empty)
            {
                string Filtre = "TedarikciFirmaAdi Like '%" + txtFirmaAra.Text + "%'";
                MySource.Filter = Filtre;
                MySource.Position = MySource.Count - 1;
            }
            else
            {
                MySource.RemoveFilter();
                MySource.Position = MySource.Count - 1;
            }
        }

        private void DGWTedarikciler_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            MySource.EndEdit();
        }
        public void YeniTedarikciSatirEkle(DataTable MyTablo, BindingSource MySource)
        {
            int Satir = GenelIslemler.BosSatirVarmi(MySource);
            if (Satir >= 0)
            {
                MySource.Position = Satir;

            }
            else if (Satir == -1)
            {
                DataRow MyRow = MyTablo.NewRow();
                MyRow["TedarikciFirmaAdi"] = string.Empty ;
                MyRow["TedarikciVergiNo"] = string.Empty;
                MyRow["TedarikciVergiDairesi"] = string.Empty;
                MyRow["TedarikciIletisimAdresi"] = string.Empty;
                MyRow["TedarikciYetkliAdiSoyadi"] = string.Empty;
                MyRow["TedarikciAciklama"] = string.Empty;
                MyTablo.Rows.Add(MyRow);
                MySource.Position = GenelIslemler.BosSatirVarmi(MySource);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.YeniTedarikciSatirEkle(MyDataSet.Tables["Tedarikciler"], MySource);
        }

        private void DGWTedarikciler_KeyDown(object sender, KeyEventArgs e)
        {
            if (DGWTedarikciler.CurrentRow != null)
            {
                #region Arama TextBox Sec
                if (DGWTedarikciler.CurrentRow.Index == 0 && e.KeyCode == Keys.Up)
                {

                   txtFirmaAra.Select();
                }
                #endregion
                #region KayitSil
                if (e.KeyData == Keys.Delete)
                {
                    //e.Handled = true;
                    //    GenelIslemler.KayitSil(MySource);
                }
                #endregion

            }
            #region SonKayıta gelince yenisatir acar
            if (e.KeyData == Keys.Down && DGWTedarikciler.RowCount - 1 == MySource.Position)
            {
                e.Handled = true;
                button1.PerformClick();

            }
            #endregion
        }

        private void DGWTedarikciler_CurrentCellChanged(object sender, EventArgs e)
        {
            if (DGWTedarikciler.CurrentRow != null)
            {
                //GenelIslemler.SatirGirisiKisitla(DGWTedarikciler.CurrentRow.Cells[1], DGWTedarikciler.CurrentRow);
                GenelIslemler.KontrolAktifPasif(DGWTedarikciler.CurrentRow.Cells[1], groupBox1.Controls);

            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            toolStripSaat.Text = DateTime.Now.ToLongTimeString();
            toolStripTarih.Text = DateTime.Now.ToLongDateString();
        }

        private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
        {
            button1.PerformClick();
        }

        private void DGWTedarikciler_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                #region Tedarikci Adi kontrol
                MySource.EndEdit();
                DataRow MyDataRow = ((DataRowView)(MySource.Current)).Row;
                if (e.ColumnIndex == 1)
                {
                    DataGridViewCell cell = DGWTedarikciler[e.ColumnIndex, e.RowIndex];
                    if (!GenelIslemler.HucreIcerigiBosmu(DGWTedarikciler.CurrentCell))
                    {
                        MyDataRow.RejectChanges();
                        MessageBox.Show("boş geçilemez");
                    }
                    else
                    {


                        if (MyDataRow.RowState == DataRowState.Added)
                        {
                            #region Eklenmişse
                            int TedarikciID = TedarikciProvider.InsertTedarikci(MyDataRow);
                            if (TedarikciID > 0)
                            {
                                MyDataRow["TedarikciID"] = TedarikciID;
                                MyDataRow.AcceptChanges();
                                GenelIslemler.ToolstripMesajYolla(this.MdiParent  , "Yeni Tedarikci girişi başarıyla gerçekleşmiştir.");
                           
                            }
                            else
                            {
                                MyDataRow.RejectChanges();
                                GenelIslemler.ToolstripMesajYolla(this.MdiParent, "Yeni Tedarikci girişinde hata oluştu.Giriş başarısız oldu.");
                            }

                            #endregion
                        }

                        else if (MyDataRow.RowState == DataRowState.Modified )
                        {
                            #region Guncellenmişse
                            int sonuc = TedarikciProvider.UpdateTedarikci(MyDataRow);
                            if (sonuc > 0)
                            {
                                MyDataRow.AcceptChanges();
                                GenelIslemler.ToolstripMesajYolla(this.MdiParent, "Tedarikci kaydı başarıyla güncellenmiştir...");
                            }
                            else
                            {
                                MyDataRow.RejectChanges();
                                GenelIslemler.ToolstripMesajYolla(this.MdiParent, "Güncelleme işleminde hata oluştu.Güncelleme iptal edildi");
                            }
                            #endregion
                        }
                    
                    }
                }
                #endregion
            }
            catch (Exception)
            {
                
                
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
           
        }

        private void groupBox1_Validated(object sender, EventArgs e)
        {
            if (DGWTedarikciler.CurrentRow != null)
            {
                MySource.EndEdit();
                DataRow MyDataRow = ((DataRowView)(MySource.Current)).Row;
                if (MyDataRow.RowState == DataRowState.Modified )
                {
                  #region Guncellenmişse
                  int sonuc = TedarikciProvider.UpdateTedarikci(MyDataRow);
                  if (sonuc > 0)
                  {
                     MyDataRow.AcceptChanges();
                     GenelIslemler.ToolstripMesajYolla(this.MdiParent, "Tedarikci kaydı başarıyla güncellenmiştir...");
                  }
                  else
                  {
                    MyDataRow.RejectChanges();
                    GenelIslemler.ToolstripMesajYolla(this.MdiParent, "Güncelleme işleminde hata oluştu.Güncelleme iptal edildi");
                            }
                  #endregion
                }
            }
        }

        private void DGWTedarikciler_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {

            if (DGWTedarikciler.CurrentRow!=null)
            {
                
            
                if (VeriGonderilecekForm!=null)
                {
                     
                 DialogResult Mesaj = MessageBox.Show(DGWTedarikciler[1, DGWTedarikciler.CurrentRow.Index].Value.ToString() + Environment.NewLine + "Firması için yeni bir Sipariş oluşturmak istediğinizden Emin misiniz ?", "Kayıt Ekle", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                 if (Mesaj == DialogResult.Yes)
                 {

                  
                    DataRow Kaynak = ((DataRowView)(MySource.Current)).Row;
                    FrmAlislar Frm = ((FrmAlislar)(VeriGonderilecekForm));

                    DataTable MyTablo = Frm.MyDataSet.Tables["Alislar"];
                    if (MyTablo!=null)
                    {
                            DataRow NewRow = MyTablo.NewRow();
                            NewRow["TedarikciID"] = Kaynak["TedarikciID"];
                            NewRow["TedarikciFirmaAdi"] = Kaynak["TedarikciFirmaAdi"];
                            NewRow["PersonelID"] = 1245;
                            NewRow["PersonelAdi"] = "Hasan Coşkun";
                            NewRow["AlisFaturaNo"] = string.Empty;
                            NewRow["AlisFaturaTarihi"] = DBNull.Value;
                            NewRow["AlisIrsaliyeTarihi"] = DBNull.Value;
                            #region Eklenmişse
                            int AlisID = AlisProvider.InsertAlis(NewRow);
                            if (AlisID > 0)
                            {
                                NewRow["AlisID"] = AlisID;
                                MyTablo.Rows.Add(NewRow);
                                NewRow.AcceptChanges();
                                GenelIslemler.ToolstripMesajYolla(this.Owner.MdiParent , "İşlem başarıyla gerçekleşmiştir.");

                            }
                            else
                            {
                                //NewRow.RejectChanges();
                                GenelIslemler.ToolstripMesajYolla(this.Owner.MdiParent, "Yeni Tedarikci girişinde hata oluştu.Giriş başarısız oldu.");
                            }

                            #endregion
                        
                        
                        
                        
                        
                        
                            Frm.MySource.Position = Frm.MySource.Count - 1;
                            this.Close();
                    }
                 }
                    
                    
                    
                }
            }
          
        }


    }
}
